首页
首页

nginx 1.8.1 升级至 1.10.3,并启用http2

文章基于Centos 6.5环境

1、下载源码

1
wget http://nginx.org/download/nginx-1.10.3.tar.gz  && tar zxf nginx-1.10.3.tar.gz

2、 编译nginx

a. nginx -V  获取当前版本的所有编译参数
1
2
3
4
5
6
[root@www nginx-1.10.3]# nginx -V
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --add-module=/git/ngx_http_substitutions_filter_module
b. 开始编译
1
2
3
./configure  --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --add-module=/git/ngx_http_substitutions_filter_module --with-http_v2_module --with-openssl=/git/openssl-1.1.0e

make
注意:
      1.nginx 在 1.9.5 以后开始支持 HTTP/2,并且移除了 SPDY 模块,所以需要删除-with-http_spdy_module编译参数

      2.--with-http_v2_module 添加该参数使支持http2

c. 检查编译后结果,在源码目录中的objs目录下找到新的nginx主程序,并运行nginx -V
1
2
3
4
5
6
7
8
9
cd objs/
./nginx -V

[root@www objs]# ./nginx -V
nginx version: nginx/1.10.3
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --add-module=/git/ngx_http_substitutions_filter_module --with-http_v2_module

3、 备份已经升级nginx

a. 备份nginx
1
mv /etc/sbin/nginx /etc/sbin/nginx.old
b. 拷贝编译好的nginx到刚刚目录
1
cp nginx-1.10.3/objs/nginx /etc/sbin/nginx
c. 重启or平滑升级

    如果没有要求直接重启即可 service nginx restart

    平滑升级

        aa. 重命名就进程id名,并开启新的nginx worker
1
kill -USR2 `cat /var/run/nginx.pid`
    执行这条命令之后  nginx.pid会自动重命名为 nginx.pid.oldbin,并会启动新的nginx,通过ps -ef 可以看到新旧nginx都在运行

bb. 关闭旧的nginx worker进程 
1
kill -WINCH `cat /var/run/nginx.pid.oldbin`
cc. 关闭old nginx master进程,并删除nginx.pid.oldbin
1
kill -QUIT `cat /var/run/nginx.pid.oldbin`
知识点:

    Nginx可接收信号

    TERM或 INT                 快速停止nginx

    QUIT                            平缓停止nginx

    HUP                             平滑重启

    USR1                            重新打开日志文件,常用于日志切割

    USR2                            平滑升级

    WINCH                        平缓停止worker process,用于nginx平滑升级

4、 ngxin 启动http2

这一步就很简单了,只需将http2 添加到所有 listen 指令当中即可。
例子:
1
listen 443 ssl http2

nginx -s reload

以上

感谢你浪费时间观看本篇文章,希望此文章对你有帮助。

End!

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫